require(["config"], function() {
	require(["jquery", "template","cookie","load"], function($,template) {
        function List(){
			this.render()
			this.addListener();
			
			// 配置 cookie 自动在JS值与JSON值之间转换
			$.cookie.json = true;
		}
		$.extend(List.prototype,{
			// 加载渲染列表商品
			render(){
				// 获取当前待添加载商品的id
				const _id = location.search.slice(location.search.lastIndexOf("=")+1);
				// console.log(_id)
				$.getJSON("http://rap2api.taobao.org/app/mock/120615/api/detail?id=" + _id,(data)=>{
					// console.log(data)
					const html = template("detail-template",{products:data.res_body.list})
					// console.log(html)
					$(".info").prepend(html);
				})

				// var htmlstring = template("id","data")
			},

			// 添加事件监听
			addListener(){
				$(".wrap").on("click",".submit", this.addToCartHandler);
				// 数量增加/减少
                $(".wrap").on("click","#icon_subtract,#icon_add",$.proxy(this.modifyAmountHandler,this))
                // 输入修改数量
                $(".wrap").on("blur","#number",$.proxy(this.modifyAmountHandler,this))
                
                $(".wrap").on("click","#number,#icon_subtract,#icon_add",(this.calcTotalHandler));
                $(".wrap").on("blur","#number",(this.calcTotalHandler));
			},
			// 添加到购物车处理
			addToCartHandler(){
				console.log(123)
				// 获取当前选购的商品对象
				const $parent = $(".prod_detail");
				const currentProduct = {
					id:$parent.find(".id").text(),
					img:$parent.find("#goods_img").attr("src"),
					size:$parent.find(".products_size").text(), 
					title:$parent.find(".introduce").text(),
					price:$parent.find("#new").text(),
					amount:1
				}
				// 获取在 cookie 中已保存的购物车数组
				const cart = $.cookie("cart") || [];
				// 判断在 cart 数组中是否存在当前选购的商品对象
				const has = cart.some(curr=>{
					if (curr.id == currentProduct.id) { // 已有选购
						curr.amount++; // 增加数量
						return true;
					}
					return false;
				});
				// 如果未选购过
				if (!has)
					cart.push(currentProduct);
				// 将购物车的数组保存到 cookie 中
				$.cookie("cart", cart, {expires: 10, path: "/"});

			},
			// 修改数量处理
            modifyAmountHandler(event){
                //console.log(event.target)
                // 所在行
                const   
                    $src = $(event.target),
                    $tr = $src.parents(".count");
                    console.log($tr)
                // 当前修改数量的商品id
                const id = $tr.find(".id").text();
                
                // 对应商品对象
                const prod = this.cart.filter(curr=>curr.id == id)[0];
               // console.log(prod)
				// 修改数量
				console.log($src	)
                if($src.is("#icon_add")) // 加
                    prod.amount++;
                else if($src.is("#icon_subtract")){ // 减
                    if(prod.amount <=1) // 商品数量最小减到1
                     return;
                    prod.amount--;

                }else if($src.is("#number")){ // 输入修改
                    // 获取输入的数量值
                    const _amount = $src.val();
                    // 判断是否符合数字合法格式
                    const reg = /^[1-9]\d*$/;
                    if(!reg.test(_amount)){
                        $src.val(prod.amount);
                        return;
                    }
                    prod.amount = Number(_amount);
                }
                // 保存 cookie
                $.cookie("cart",this.cart,{expires:10,path:"/"});
                // 显示修改后数量
                $tr.find("#number").val(prod.amount);
                // 修改修改后的小计金额
                $tr.find("#subtotal").text((prod.price*prod.amount).toFixed(2));
            }	
		});
		
		new List();
	});
});